package cn.net.api;
/*本类用于测试String类的用法*/
public class TestString {
    public static void main(String[] args) {
        //1.创建String对象方式一
        /*1.字符串底层维护的是char[].存放在堆中；new String（）没有高校效果*/
            char[] value = {'a','b','c'};
            String s1 = new String(value);//开辟一个空间
            String s11 = new String(value);//开辟另一个空间
        //2.创建String对象方式二
        /*2.此种方式创建,底层也会new String(),存放在堆中常量池,效率高；【直接声明并赋值高效的效果】*/
                String s2 = "abc";
                String s22 ="abc";
        /*3.==比较的是地址值
        Object中equals()的默认实现比较的也是==地址值
        但String类对此方法做了重写,比较的就是字符串的具体内容*/
        /**‘==’不同方法比较*/
        System.out.println(s1 == s2);//false

        /**‘==’同方法比较*/
        System.out.println(s1 == s11);//false,同方式一没有高效效果则地址值不同！！！
        System.out.println(s2 == s22);//true,同方式二有高效的效果则地址值相同
        /*4.同/不同方法之间的的equals比较*/
        System.out.println(s1.equals(s11));//true
        System.out.println(s2.equals(s22));//true
        System.out.println(s1.equals(s2));//true;两种创建方法，但比较具体内容相同
    }
}

     /*   方式一:
        String(char[] value) 分配一个新的 String，使其表示字符数组参数中当前包含的字符序列。
        方式二: String str = “abc”;
      */